﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "OwnerPtr.h"
#include "GcmpRenderingInterface.h"

namespace gcmp
{
    class IModelView;
    class ElementId;

    /// \brief 透明面遮挡显示模式
    enum class TransparentFaceOcclusionMode : int32_t
    {
        CompleteOcclusion = 0,    ///< 透明面完全遮挡
        CompleteUnocclusion = 1,  ///< 透明面完全不遮挡
    };

    /// \brief 面透明显示配置接口
    ///
    class GCMP_RENDERING_INTERFACE_EXPORT  ITransparentFaceOcclusionModeSetting
    {
    public:
        /// \brief 析构函数
        virtual ~ITransparentFaceOcclusionModeSetting();

        /// \brief 获取透明面遮挡显示模式,根据视图和对象状态动态返回透明遮挡模式
        /// \param pModelView 显示所在的视图
        /// \param elementId 对象Id
        /// \return 遮挡显示模式
        virtual TransparentFaceOcclusionMode GetOcclusionModeSettings(const IModelView* pModelView, const ElementId& elementId) const = 0;
    };
}

